草庐IT

C++ 逐步枚举

全部标签

javascript - JavaScript 和/或 JSON 是否需要解析器按定义顺序枚举属性?

给定一个对象定义:varo={x:1,y:2,z:3,b:4,a:5,m:6,X:7};在枚举时,Chrome似乎遵守属性定义的顺序:for(variino){console.log(i,o[i]);}产量:x1y2z3b4a5m6X7JavaScript和/或JSON指定这种级别的顺序保留吗?无论哪种情况,它可靠吗? 最佳答案 不,Javascript规范明确不要求任何特定的枚举顺序,它们根据定义是无序的。参见12.6.4oftheECMAScriptspecification部分:Themechanicsandorderofen

javascript - JS不可枚举函数

我试图在原型(prototype)对象上定义一个不可枚举的toJSON函数,但运气不佳。我希望得到类似于ECMAScript5toJSON的东西:Object.defineProperty(obj,prop,{enumerable:false});然而,这将它定义为一个不能作为方法访问的属性。[编辑:尼克错了;它可以作为一种方法来访问。他的错误在于此问题中未显示的代码-有关详细信息,请参阅他对下面答案的评论。]我希望能够以不可枚举的方式定义函数,因为我计划在所有基本类型的原型(prototype)中定义(String,Number、Boolean、Array和Object),以便我可以

javascript - 通过 UglifyJS 枚举正则表达式

我有一些JavaScript代码,我需要从中找到每个文字正则表达式的开始+结束索引。如何从UglifyJS中提取这些信息?varuglify=require('uglify-js');varcode="func(1/2,/hello/);";varparsed=uglify.parse(code);我进入变量parsed的结构非常复杂。我所需要的只是每个文字正则表达式的[{startIdx,endIdx},{startIdx,endIdx}]数组。附言如果有人认为可以通过比UglifyJS更好的方式完成相同的任务,欢迎您提出建议!更新我知道如果我深入挖掘解析的结构,那么对于每个正则表达

javascript - 为什么 JSON.stringify 不序列化不可枚举的属性?

我正在使用JavaScript将对象序列化为JSON字符串,我注意到只有可枚举的对象属性被序列化:vara=Object.create(null,{x:{writable:true,configurable:true,value:"hello",enumerable:false},y:{writable:true,configurable:true,value:"hello",enumerable:true}});document.write(JSON.stringify(a));//resultis{"y":"hello"}[pen]请问这是为什么?我搜索了MDNpage,json2

javascript - 遍历不可枚举的属性

我已经使用Object.defineProperty和enumerable:false在配置对象上定义了一些属性。然而,在我的模块中有一个地方我想迭代不可枚举的属性以及可枚举的属性。是否可以在不在其他地方保留属性名称列表的情况下执行此操作? 最佳答案 我想你可以使用getOwnPropertyNames它返回可枚举或不可枚举的属性。来自文档:Returnsanarrayofallproperties(enumerableornot)founddirectlyuponagivenobject.

Javascript - 从值中打印枚举的名称

有没有办法打印给定int值的枚举字段的值?例如我有以下枚举:refractiveIndex={"vacuum":1,"air":1.000293,"water":1.33,"diamond":2.419};如果我有一个值,有没有办法打印枚举的名称。例如,假设我有一个变量设置为1,我想打印出“vacuum”,我该怎么做:varvalue=1;console.log(refractiveIndex(value));//Shouldprint"vacuum"toconsole? 最佳答案 您可以迭代键并针对属性的值进行测试。varrefr

javascript - 有没有办法在 Javascript 中拥有/锁定枚举对象的唯一索引值?

这个问题在这里已经有了答案:HowcanIguaranteethatmyenumsdefinitiondoesn'tchangeinJavaScript?(50个答案)关闭6年前。阅读"recommendedway"处理ENUMType在Javascript中,我仍然不确定,因为我可以将该值与伪造值进行比较,而我应该只与“枚举”类型的值进行比较:varDaysEnum={"monday":1,"tuesday":2,"wednesday":3,...}Object.freeze(DaysEnum)switch(day){case"monday":return"Hello"case"tu

枚举中的 Javascript 枚举

我在javascript中有以下“枚举”来指示我的应用程序的状态:varState={STATE_A:0,STATE_B:1,STATE_C:2//...}现在,我希望每个状态都有一个“子状态”。因此,例如,STATE_B可能位于STATE_B1或STATE_B2...构建此结构的最佳方式是什么?我会以某种方式在State“enum”中嵌套一个“enum”吗?谢谢如果有更好的方法来完全构建它(除了枚举),我会洗耳恭听。基本上我需要能够设置和检查我的应用程序的状态,并且每个状态都可以(但不是必需的)有一个子状态附加到它可以设置和检查。如果解决方案允许我深入嵌套一层以上,那就更好了。

javascript defineProperty 使属性不可枚举

我正在尝试使用defineProperty使属性不出现在for...in循环中,但它不起作用。这个代码正确吗?functionItem(){this.enumerable="enum";this.nonEnum="noEnum";}Object.defineProperty(Item,"nonEnum",{enumerable:false});vartest=newItem();for(vartmpintest){console.log(tmp);} 最佳答案 Item没有名为nonEnum(checkitout)的属性。它是一个(

javascript - 将枚举转换为值数组(将所有 JSON 值放入数组中)

我用这个方法EnumsinJavaScript?在我们的代码中创建枚举..所以vartypes={"WHITE":0,"BLACK":1}现在的问题是,当我想在任何地方创建验证时,我必须这样做;model.validate("typesColumn",[types.WHITE,types.BLACK]);现在有没有一种方法可以将类型中的值简单地转换为数组,这样我就不必列出枚举的所有值?model.validate("typesColumn",types.ValuesInArray]);编辑:我创建了一个非常简单的枚举库来生成简单的枚举npm--save-devinstallsimple